import Vue from 'vue';
import Vuex from 'vuex';
import createLogger from 'vuex/dist/logger';
import user from './modules/user';
import glob from './modules/glob';
import social from './modules/social';

Vue.use(Vuex);

const debug = process.env.NODE_ENV !== 'production';

const store = new Vuex.Store({
  modules: {
    user,
    glob,
    social,
  },
  strict: debug,
  plugins: debug ? [createLogger()] : [],
});
if (module.hot) {
  // 使 action 和 mutation 成为可热重载模块
  module.hot.accept(['./modules/user', './modules/glob'], () => {
    // 获取更新后的模块
    // 因为 babel 6 的模块编译格式问题，这里需要加上 `.default`
    const moduleUser = require('./modules/user').default;
    const moduleGlob = require('./modules/glob').default;
    const moduleSocial = require('./modules/social').default;
    // 加载新模块
    store.hotUpdate({
      modules: {
        user: moduleUser,
        glob: moduleGlob,
        social: moduleSocial,
      },
    });
  });
}
export default store;
